package com.chapter10.block_;

/**
 * 代码块的应用
 * 1.可以用于构造器的代码冗余问题
 * */
public class CodeBlock01 {
    private String name;
    private double price;
    private String director;
    //创建代码块
    //当调用任何构造器时,创建对象,都会先调用代码块中的内容
    //如果是静态代码块,会随着类的加载而执行,并且只会执行一次
    //如果是普通代码块,每创建一个对象,就执行一次
    /**
     * 代码块什么时候被加载
     * 1.创建对象实例的时候(new)
     * 2.创建子类对象实例,父类也会被加载
     * 3.使用类的静态成员时(静态属性,静态方法)
     * 4.如果只使用类访问静态变量时,普通代码块不会被执行
     * 5.静态属性和静态代码块初始化的优先级是一样的,如果既有静态属性和静态代码块,默认按顺序执行初始化
     * */
    {
        System.out.println("电影开始...");
    }

    public CodeBlock01(String name) {
        this.name = name;
    }

    public CodeBlock01(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public CodeBlock01(String name, double price, String director) {
        this.name = name;
        this.price = price;
        this.director = director;
    }
}
